console.log(1);
setTimeout(() => {
  console.log(2);
  Promise.resolve().then(() => {
    console.log(3);
  });
});


new Promise((resolve, reject) => {
  console.log(4);
  resolve(5);
}).then((data) => {
  console.log(data);
  Promise.resolve().then(() => {
    console.log(6);
  }).then(() => {
    console.log(7);
    setTimeout(() => {
      console.log(8);
    }, 0);
  })
});